const requests = new Map()
const requestPath = 'mainPath'
const send = params => {
  return new Promise((resolve, reject) => {
    const id = getId()
    requests.set(id, { resolve: resolve, reject: reject })
    const args = {
      header: { requestId: id },
      params: params
    }
    window.electron.ipcRenderer.send(requestPath, args)
  })
}
const on = path => {
  window.electron.ipcRenderer.on(path, (event, res) => {
    requests.get(res.requestId).resolve(res.reply)
    requests.delete(res.requestId)
  })
}
const getId = () => {
  var s = []
  var hexDigits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  for (var i = 0; i < 36; i++) {
    s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
  }
  s[14] = '4'
  s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1)
  s[8] = s[13] = s[18] = s[23] = '-'
  return s.join('')
}
on(requestPath)
export default { send }
